Index: pbx.c =================================================================== RCS file: /usr/cvsroot/asterisk/pbx.c,v retrieving revision 1.144 diff -u -r1.144 pbx.c --- pbx.c 8 Aug 2004 17:15:01 -0000 1.144 +++ pbx.c 21 Aug 2004 00:42:28 -0000 @@ -4863,6 +4863,16 @@ return ip ? ip->registrar : NULL; } +int ast_get_extension_matchcid(struct ast_exten *e) +{ + return e ? e->matchcid : 0; +} + +char *ast_get_extension_cidmatch(struct ast_exten *e) +{ + return e ? e->cidmatch : NULL; +} + char *ast_get_extension_app(struct ast_exten *e) { return e ? e->app : NULL; Index: pbx/pbx_config.c =================================================================== RCS file: /usr/cvsroot/asterisk/pbx/pbx_config.c,v retrieving revision 1.43 diff -u -r1.43 pbx_config.c --- pbx/pbx_config.c 21 Jun 2004 14:20:03 -0000 1.43 +++ pbx/pbx_config.c 21 Aug 2004 00:42:29 -0000 @@ -1016,6 +1016,7 @@ struct ast_exten *e, *last_written_e = NULL; struct ast_include *i; struct ast_ignorepat *ip; + struct ast_sw *sw; /* registered by this module? */ if (!strcmp(ast_get_context_registrar(c), registrar)) { @@ -1058,11 +1059,19 @@ } tempdata = startdata; } - fprintf(output, "exten => %s,%d,%s(%s)\n", - ast_get_extension_name(p), - ast_get_extension_priority(p), - ast_get_extension_app(p), - tempdata); + if (ast_get_extension_matchcid(p)) + fprintf(output, "exten => %s/%s,%d,%s(%s)\n", + ast_get_extension_name(p), + ast_get_extension_cidmatch(p), + ast_get_extension_priority(p), + ast_get_extension_app(p), + tempdata); + else + fprintf(output, "exten => %s,%d,%s(%s)\n", + ast_get_extension_name(p), + ast_get_extension_priority(p), + ast_get_extension_app(p), + tempdata); if (tempdata) free(tempdata); } else @@ -1095,6 +1104,24 @@ } if (ast_walk_context_includes(c, NULL)) + fprintf(output, "\n"); + + /* walk through switches */ + sw = ast_walk_context_switches(c, NULL); + while (sw) { + if (!strcmp(ast_get_switch_registrar(sw), registrar)) { + if (!context_header_written) { + fprintf(output, "[%s]\n", ast_get_context_name(c)); + context_header_written = 1; + } + fprintf(output, "switch => %s/%s\n", + ast_get_switch_name(sw), + ast_get_switch_data(sw)); + } + sw = ast_walk_context_switches(c, sw); + } + + if (ast_walk_context_switches(c, NULL)) fprintf(output, "\n"); /* fireout ignorepats ... */ Index: include/asterisk/pbx.h =================================================================== RCS file: /usr/cvsroot/asterisk/include/asterisk/pbx.h,v retrieving revision 1.24 diff -u -r1.24 pbx.h --- include/asterisk/pbx.h 6 Apr 2004 22:17:32 -0000 1.24 +++ include/asterisk/pbx.h 21 Aug 2004 00:42:30 -0000 @@ -503,6 +503,8 @@ /* Other extension stuff */ int ast_get_extension_priority(struct ast_exten *exten); +int ast_get_extension_matchcid(struct ast_exten *e); +char *ast_get_extension_cidmatch(struct ast_exten *e); char *ast_get_extension_app(struct ast_exten *e); void *ast_get_extension_app_data(struct ast_exten *e);